package cn.edu.hqu.cst.android.ljc.test3;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //监听器事件相关按钮
    TextView info;
    Button act_lis, in_lis, an_lis, lam_lis, out_lis;
    //系统信息按钮
    Button show_info;
    //进度条按钮
    Button show_pro;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        info = findViewById(R.id.info);

        //直接使用Activity作为事件监听器
        act_lis = findViewById(R.id.act_listener);
        act_lis.setOnClickListener(this);

        //内部类作为监听器
        in_lis = findViewById(R.id.inner_listener);
        in_lis.setOnClickListener(new InnerListener());

        //匿名类作为监听器
        an_lis = findViewById(R.id.anon_listener);
        an_lis.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                info.setText("调用匿名类作为监听器");
            }
        });

        //LAMBDA表达式作为监听器
        lam_lis = findViewById(R.id.lam_listener);
        lam_lis.setOnClickListener(view -> info.setText("调用LAMBDA表达式作为监听器"));

        //外部类作为监听器
        out_lis = findViewById(R.id.outer_listener);
        out_lis.setOnClickListener(new OuterListener(info){
            @Override
            public void onClick(View view) {
                //调用OuterListener中的onClick方法
                super.onClick(view);
            }
        });

        //跳转显示系统信息界面
        show_info = findViewById(R.id.show_info);
        show_info .setOnClickListener(view -> {
            Intent i = new Intent(MainActivity.this , ShowSystemInfo.class);
            startActivity(i);
        });

        //跳转进度条界面
        show_pro = findViewById(R.id.show_progress);
        show_pro .setOnClickListener(view -> {
            Intent i = new Intent(MainActivity.this , DisplayProgressBar.class);
            startActivity(i);
        });
    }

    //ACTIVITY作为监听器
    @Override
    public void onClick(View view) {
        info.setText("调用ACTIVITY作为监听器");
    }

    //内部类作为监听器
    private class InnerListener implements View.OnClickListener {
        @Override
        public void onClick(View view) {
            info.setText("调用内部类作为监听器");
        }
    }

    //用于被标签绑定
    public void myClick(View view){
        info.setText("调用监听器绑定到标签");
    }
}

class OuterListener implements View.OnClickListener{
    private TextView info;
    //构造方法，获取提示消息的TextView
    public OuterListener(TextView info){
        this.info = info;
    }

    @Override
    public void onClick(View view) {//view 传入的是调用该事件的按钮
        info.setText("调用外部类作为监听器");
    }
}